#ifndef __CONTAINER_H
#define __CONTAINER_H

#define SECTION(x)                 __attribute__((section(x)))
#define RT_USED                    __attribute__((used))
/********************************************************
连接应用层和驱动层，
驱动层将驱动程序注册到容器中，
应用层在容器中查询相应的驱动，查到后，获取驱动地址
*********************************************************/

struct container_def
{
	const char*name;
	const void*fn;
};
	
#define CONTAINER_UINT( name, fn, level)                                                       \
	RT_USED const struct container_def __dev_desc_##name SECTION(".dev_fn." level) = \
	{ #name,fn};

			
#define CONTAINER_REGISTER( name, fn )	CONTAINER_UINT( name, fn, "1") /* 容器注册 */



#ifdef __cplusplus
extern "C" {
#endif

const void*container_find_obj( const char*name ); /* 容器查找 */
	


#ifdef __cplusplus
}
#endif	
	

#endif

	
	
